package com.wangdong.bitmapcache;

import android.graphics.Bitmap;
import android.util.LruCache;

public class BitmapCaChe {

    private LruCache<String, Bitmap> mMemoryCache;

    public BitmapCaChe() {
        //获取到可用内存的最大值,使用内存超出这个值会引起OutofMemory异常
        int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
        // 使用最大可用内存值的1/8作为缓存的大小。
        int cacheSize = maxMemory / 8;
        mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
            @Override
            protected int sizeOf(String key, Bitmap bitmap) {
                // 重写此方法来衡量每张图片的大小，默认返回图片数量。
                return bitmap.getByteCount() / 1024;
            }
        };
    }
    /**
     * 添加图片
     * 如果内存缓存中没有就添加到内存缓存中如果有就不执行 key判断
     */
    public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
        if (getBitmapFromMemCache(key) == null) {
            mMemoryCache.put(key, bitmap);
        }
    }

    /**
     *  获取内存缓存中的图片并返回,
     *  如果就没就通过 LruCache 内部方法 创建返回null值
     *             V createdValue = create(key);
     *             if (createdValue == null) {
     *            return null;
     *         }
     * @param key
     * @return
     */
    public Bitmap getBitmapFromMemCache(String key) {
        return mMemoryCache.get(key);
    }

}
